home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / ctlib100.zip / INSTALL.LZH / ARRAYS8.PAS < prev    next >
Pascal/Delphi Source File  |  1996-10-12  |  3KB  |  107 lines

  1. {**************************************************************************}
  2. {*  BitSoft Development, L.L.C.                                           *}
  3. {*  Copyright (C) 1995, 1996 BitSoft Development, L.L.C.                  *}
  4. {*  All rights reserved.                                                  *}
  5. {*  Containers Library demo                                               *}
  6. {**************************************************************************}
  7.  
  8. program Arrays8;
  9.  
  10. {$X+}
  11.  
  12. { Sample program for using a standard stream array }
  13.  
  14. uses Containr, ctArrays,
  15.      {$ifdef Windows}
  16.      WinCtr;
  17.      {$else}
  18.      Crt;
  19.      {$endif}
  20.  
  21. type
  22.   PWeatherInfo = ^TWeatherInfo;
  23.   TWeatherInfo = record
  24.     Location : string[20];
  25.     Humidity : Integer;
  26.     Rain : Integer;
  27.   end; { TWeatherInfo }
  28.  
  29. procedure SetWeatherValues(ALocation : string; AHumidity, ARain : Integer;
  30.   var WeatherRec : PWeatherInfo);
  31. begin
  32.   GetMem(WeatherRec, SizeOf(TWeatherInfo));
  33.   with WeatherRec^ do
  34.   begin
  35.     Location := ALocation;
  36.     Humidity := AHumidity;
  37.     Rain := ARain;
  38.   end; { with }
  39. end;
  40.  
  41. procedure DisplayWeatherData(WeatherData : PSequence);
  42. var
  43.   i : Integer;
  44.   Item : Pointer;
  45. begin
  46.   with WeatherData^ do
  47.     for i := FirstIndex to LastIndex do
  48.     begin
  49.       Item := At(i);
  50.       with PWeatherInfo(Item)^ do
  51.         writeln('Hour: ', i:2, ':00', '':3, Location, '':20 -
  52.           Length(Location), Humidity, '':5, Rain:5);
  53.       DoneItem(Item); { required }
  54.     end; { for }
  55. end;
  56.  
  57. procedure FindLowHumidityValue(WeatherData : PSequence);
  58. var
  59.   Item : Pointer;
  60.   Index : LongInt;
  61.  
  62.   function HasLowHumidity(Item : PWeatherInfo) : Boolean; far;
  63.   begin
  64.     HasLowHumidity := (Item^.Humidity < 22);
  65.   end;
  66.  
  67. begin
  68.   Item := WeatherData^.FirstThat(@HasLowHumidity, Index);
  69.   writeln ('First with low humidity (H < 22):');
  70.   with PWeatherInfo(Item)^ do
  71.     writeln('Hour: ', Index:2, ':00', '':3, Location, '':20 -
  72.       Length(Location), Humidity, '':5, Rain:5);
  73.   WeatherData^.DoneItem(Item)  { required }
  74. end;
  75.  
  76. var
  77.   MorningWeatherData : PEmsStdArray;
  78.   WeatherInfo: PWeatherInfo;
  79.  
  80. begin
  81.   ClrScr;
  82.  
  83.   { Create the array }
  84.   MorningWeatherData := New(PEmsStdArray, Init(7, 11, SizeOf(TWeatherInfo)));
  85.  
  86.   { Insert the items in the array }
  87.   with MorningWeatherData^ do
  88.   begin
  89.     SetWeatherValues('Miami', 34, 0, WeatherInfo);
  90.     AtInsert(7, WeatherInfo);
  91.     SetWeatherValues('Helsinski', 23, 3, WeatherInfo);
  92.     AtInsert(8, WeatherInfo);
  93.     SetWeatherValues('Canada', 26, 2, WeatherInfo);
  94.     AtInsert(9, WeatherInfo);
  95.     SetWeatherValues('Berlin', 28, 5, WeatherInfo);
  96.     AtInsert(10, WeatherInfo);
  97.     SetWeatherValues('Melbourne', 20, 0, WeatherInfo);
  98.     AtInsert(11, WeatherInfo);
  99.   end; { with }
  100.  
  101.   DisplayWeatherData(MorningWeatherData);
  102.   writeln;
  103.   FindLowHumidityValue(MorningWeatherData);
  104.  
  105.   { Dispose of the array }
  106.   Dispose(MorningWeatherData, Done);
  107. end.